package main

import (
	"fmt"
	"os"
)

func main() {
	/**
	在实际工程项目中，我们希望通过程序的错误信息快速定位问题，但是又不喜欢错误处理代码写得冗余而又啰嗦。
	Go语言没有提供像Java语言中的try...catch异常处理方式，而是通过函数返回值逐层往上抛。这种设计鼓励工
	程师在代码中显示的检查错误，而非忽略错误，好处是避免漏掉本应处理的错误，带来的弊端就是代码啰嗦。
	*/
	/**1.1 错误和异常
	错误是什么？
	错误指的是可能出现问题的地方出现了问题。比如打开一个文件失败，这种错误在人们的意料之中。
	什么是异常？
	异常指的是不应该出现问题的地方出现了问题。比如引用了空指针，这种情况是意料之外。
	错误是业务过程的一部分，而异常不是

	Go语言的错误也是一种类型。错误用内置的error类型表示。就像其它类型的，如int,float64。
	错误值可以存储在变量中，从函数中返回等。
	*/

	//演示：打开空文件
	//f, err := os.Open("Z:/goproject/GoBase/src/ch06/demo05_error.go")
	f, err := os.Open("Z:/goproject/GoBase/src/ch06/tt.txt")
	if err != nil {
		//log.Fatal(err)
		fmt.Println("打开文件错误：", err)
		return
	}
	fmt.Println(f.Name(), "----", f.Chdir())
	//errors.New()
}
